$(function () {
    // 初始长度
    let InitialLength = $(".form-group").length - 1;
    // 检测有效性长度
    let effectiveLength = 0;

    // 对象集合 input:元素对象  validation:校验规则  Error:错误提示
    const formFields = {
        email: {
            input: $("#email"),
            validation: value => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value),
            Error: "请输入有效的邮箱地址"
        },
        password: {
            input: $("#password"),
            validation: value => /^.{6,}$/.test(value),
            Error: "密码长度应至少为6个字符"
        },
    };

    // 输入错误方法
    const showError = (element, message) => {
        element.input.next().text(message);
        effectiveLength = 0;
    };

    // 输入正确方法
    const clearError = element => {
        element.input.next().text("");
        effectiveLength++;
    };

    // 绑定事件
    Object.values(formFields).forEach(field => {
        field.input.on("change", function () {
            !field.validation(this.value) ? showError(field, field.Error) : clearError(field);
        });
    });

    // 提交方法
    $("#registrationForm").on("click", function (event) {
        event.preventDefault();
        // 重新检测表单字段的有效性
        effectiveLength = 0
        Object.values(formFields).forEach(field => {
            !field.validation(field.input.val()) ? showError(field, field.Error) : clearError(field);
        });

        // 填写校验通过
        if (effectiveLength == InitialLength) {
            loginCheck();
        }
    });

    // 数据库校验
    const loginCheck = () => {
        const content = { email: formFields.email.input.val(), password: formFields.password.input.val() };

        // AJAX
        postData("http://localhost:8080/login", content, function (response) {
            // 处理成功响应
            console.log('成功:', response);
            if (response.length > 0) {
                // 跳转
                window.location.href = './tableData.HTML';
            }
        }, function (error) {
            // 处理错误响应
            console.log('错误:', error);
        });

    }

    // 保存/修改缓存  name:缓存名称  URL:对应urlGather的key
    function setlocalStorage(data) {
        localStorage.setItem(data.name, JSON.stringify(data.content))
    }

    // AJAX
    function postData(url, data, successCallback, errorCallback) {
        $.ajax({
            url: url,
            method: 'POST',
            dataType: 'json',
            contentType: 'application/json',  // 设置Content-Type
            data: JSON.stringify(data),       // 转换为JSON字符串
            success: function (response) {
                if (successCallback && typeof successCallback === 'function') {
                    successCallback(response);
                }
            },
            error: function (error) {
                if (errorCallback && typeof errorCallback === 'function') {
                    errorCallback(error);
                }
            }
        });
    }

});
